package com.fiap.solutions.bean;


import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.bean.SessionScoped;
import javax.faces.event.AbortProcessingException;
import javax.faces.event.ValueChangeEvent;
import javax.faces.event.ValueChangeListener;
import javax.inject.Named;

import org.primefaces.model.chart.CartesianChartModel;
import org.primefaces.model.chart.ChartSeries;

import com.fiap.solutions.bo.PedidoBO;
import com.fiap.solutions.entity.Pedido;
import com.fiap.solutions.utils.Utils;

@Named
@SessionScoped
public class EstatisticaBean implements ValueChangeListener{
	
	private String tipoGrafico;
	private boolean renderizaGrafico;
/*
	private CartesianChartModel estatisticaLinha;
	 private List<Pedido> pedidos;  
	  
	    public void graficoBarra() {  
	        pedidos = new ArrayList<Pedido>();  
	        pedidos.add(new Pedido());  
	        pedidos.add(new Pedido());  
	        pedidos.add(new Pedido());  
	        pedidos.add(new Pedido());  
	        pedidos.add(new Pedido());  
	    }  
	  
	    public List<Pedido> getBirths() {  
	        return pedidos;  
	    }  
	  
*/
	
	private CartesianChartModel estatisticaLinha;
	public CartesianChartModel getEstatisticaLinha() {
	return estatisticaLinha;
	}
	
	
	@PostConstruct
	public void inicializarEstatisticas() throws ParseException {
		PedidoBO bo = new PedidoBO();
		SimpleDateFormat sdf = new SimpleDateFormat( "dd/MM/yyyy" );
		
		
		Date dataIni = sdf.parse("01/08/2014");
		Date dataFim = sdf.parse("30/10/2014");
		estatisticaLinha = new CartesianChartModel();
		Integer mes = -1;
		double valorVendas = 0;
		ChartSeries mesGrafico = null;
		
		List<Pedido> pedidos = bo.buscaPedidosPorData(dataIni, dataFim);
		for (Pedido pedido : pedidos) {
			Calendar c = Calendar.getInstance();
		
		    c.setTime(pedido.getDataEntrega());
			
		    if(mes != c.get(c.MONTH)){
		    	
		    	if(!(mesGrafico == null)){
		    		estatisticaLinha.addSeries(mesGrafico);
		    	}
		    	
		    	mes = c.get(c.MONTH);
		    	
		    	String mesAno = Utils.pegarMes(mes);
		    	mesGrafico = new ChartSeries();
		    	mesGrafico.setLabel(mesAno +" "+ c.get(c.YEAR));
		    	valorVendas = valorVendas + pedido.getValorPedido();
		    	mesGrafico.set(new Integer(c.get(c.DAY_OF_MONTH)), valorVendas);
		    }else{
		    	valorVendas  = valorVendas + pedido.getValorPedido();
		    	mesGrafico.set(new Integer(c.get(c.DAY_OF_MONTH)), valorVendas);
		    }
		}
	}	
		
		
		
		
		
		
		
		
//	estatisticaLinha = new CartesianChartModel();
//	ChartSeries janeiro = new ChartSeries();
//	janeiro.set("Janeiro", 170);
//	janeiro.set("Fevereiro", 50);
//	ChartSeries fevereiro = new ChartSeries();
//	fevereiro.setLabel("fevereiro");
//	fevereiro.set("2011", 100);
//	fevereiro.set("2012", 215);
//	fevereiro.set("2013", 325);
//	estatisticaLinha.addSeries(janeiro);
//	estatisticaLinha.addSeries(fevereiro);
//	


	


	
	public boolean isRenderizaGrafico() {
		return renderizaGrafico;
	}

	public void setRenderizaGrafico(boolean renderizaGrafico) {
		this.renderizaGrafico = renderizaGrafico;
	}

	

	public String getTipoGrafico() {
		return tipoGrafico;
	}

	public void setTipoGrafico(String tipoGrafico) {
		this.tipoGrafico = tipoGrafico;
	}


	@Override
	public void processValueChange(ValueChangeEvent arg0)
			throws AbortProcessingException {
		renderizaGrafico=true;
		if(tipoGrafico.equalsIgnoreCase("BARRA")){
			renderizaGrafico = false;
			
		}
	}

	
	
}
